<%--    Document   : index
    Created on : 22-ene-2012, 22:38:01
    Author     : marco
--%>


<%@page import="buscador.IBuscador"%>
<%@page import="buscador.InfoPalabra"%>
<%@page import="indexacion.InfoDocumento"%>
<%@page import="auxiliares.Log"%>
<%@page import="buscador.Consulta"%>
<%@page import="indexacion.IndiceDoc"%>
<%@page import="indexacion.Indice"%>
<%@page import="indexacion.Indexador,java.util.*,java.io.*,java.lang.*"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

    <head>
        <title></title>
    </head>
    <body>
        <h1>Buscador</h1>
        <form method="get" action="control">
            Busqueda: <input type="text" name="CONSULTA"/>     
            <input type="submit" value="Buscar" />
        </form>
        <a href="incluir.jsp">Indexar nuevo fichero</a><br>



        <%
            Consulta ultimaConsulta = (Consulta) application.getAttribute("CONSULTA");
            List<Integer> idDocsOrdenados = (ArrayList<Integer>) application.getAttribute("CLAVESORDENADAS");
            List<Float> similitudesOrdenadas = (ArrayList<Float>) application.getAttribute("SIMILITUDESORDENADAS");
            // Se presentan los resultados
            if (null != ultimaConsulta && idDocsOrdenados != null && similitudesOrdenadas != null) {
                

                ArrayList<String> tokensConsulta = ultimaConsulta.getTokensConsulta();
                String cadenaConsultada = ultimaConsulta.getCadenaBusqueda();
                int numeroResultados = idDocsOrdenados.size();

                out.println("<hr></hr>" + numeroResultados + " resultados para " + cadenaConsultada + "<hr></hr>");
                //     while (documentosOrdSimilitud.hasNext()) {
                if ((similitudesOrdenadas.size() == numeroResultados)) {
                    InfoDocumento infoDocResultados;
                    InfoPalabra entradaIndice;
                    int indiceDocMostrar, numResultado = 0;
                    Indice indice = (Indice)((Indexador) application.getAttribute("INDEXADOR")).getIndice();
                    IndiceDoc indiceDocumentos = (IndiceDoc) application.getAttribute("INDICEDOC");
                    int numPaginas = numeroResultados / IBuscador.numResultadosPagina;
                    String parametroInicio;
                    int u, contadorResPorPagina = 0, paginaActual;

                    if (0 < (numeroResultados % IBuscador.numResultadosPagina)) {
                        numPaginas++;
                    }

                    parametroInicio = (String) request.getParameter("inicio");
                    if (null != parametroInicio) {
                        u = Integer.parseInt(parametroInicio);

                    } else {
                        u = 0;
                    }
                    paginaActual = (u + IBuscador.numResultadosPagina) / IBuscador.numResultadosPagina;
                    for (; u < numeroResultados && 10 > contadorResPorPagina; u++) {
                
                        indiceDocMostrar = idDocsOrdenados.get(u);
                        numResultado++;
                        contadorResPorPagina++;
                        infoDocResultados = indiceDocumentos.getInfoDoc(indiceDocMostrar);
        %>
        <FONT FACE="arial" SIZE=3 COLOR=red><%=(u + 1)%></FONT>  ID <%=indiceDocMostrar%>: <a href="control?idDoc=<%=indiceDocMostrar%>" ><b><%=infoDocResultados.getTituloDoc()%></b></a> <sup><%=similitudesOrdenadas.get(u)%></sup><br>
        <%
            for (int i = 0; i < tokensConsulta.size(); i++) {
                entradaIndice = indice.getInfoPalabra(tokensConsulta.get(i), indiceDocMostrar);
                if (entradaIndice != null) {
                    out.println("<b>... " + indiceDocumentos.getResumen(tokensConsulta.get(i), entradaIndice) + ": ...</b><br>");
                }
            }
        %>
        <br>
        <%
                    }
                    if (numeroResultados > IBuscador.numResultadosPagina) {
                        if (1 < paginaActual) {
                            out.print("<a href=\"buscador.jsp?inicio=" + ((paginaActual - 2) * IBuscador.numResultadosPagina) + "\"><img border=\"0\" src=\"imagenes/flecha-izq.png\"></a>");
                        }
                        for (int f = 0; f < numPaginas; f++) {
                            if (paginaActual != (f + 1)) {
                                out.print("<a href=\"buscador.jsp?inicio=" + (f * 10) + "\">" + (f + 1) + "&nbsp;</a>");
                            } else {
                                out.print(paginaActual + "&nbsp;");
                            }
                        }
                        if (numPaginas > paginaActual) {
                            out.print("<a href=\"buscador.jsp?inicio=" + (paginaActual * IBuscador.numResultadosPagina) + "\"><img border=\"0\" src=\"imagenes/flecha-der.png\"></a>");
                        }
                    }
                    out.print("<br><br>");
                }
            } else if (null != ultimaConsulta) {
                out.println("<BR><BR><FONT FACE=\"arial\" SIZE=6 COLOR=red>NO HAY RESULTADOS PARA " + ultimaConsulta.getCadenaBusqueda().toUpperCase() + "</FONT> ");
            }


        %>

    </body>
</html>
